/**
 * 
 */
package mx.bd;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

/**
 * Clase para obtener componentes y hacer querys a BD
 * @author v1ctor
 *
 */
public class BDManager {

	private static SQLiteDatabase db;
	private static Context context;
	/**
	 * Contruimos la base de datos
	 */
	public static void initBDManager(Context context) {
		BDManager.context = context;
		db = (new BDOpenHelper(BDManager.context)).getWritableDatabase();
	}
	
	/**
	 * Tenemos acceso a la base de datos
	 * @return
	 */
	public static SQLiteDatabase getDataBase(){
		return db;
	}

	/**
	 * Devolvemos un número positivo si la cadena que se pasa como argumento existe en la BD o <i>-1</i> en caso contrario 
	 * @param uri la cadena (nombre archivo)
	 * @return
	 */
	public static long getImageID(String uri){
		
		String[] columns = new String[]{BD.nIDvimage};
		String selection = BD.sUri + "= ?;";
		String[] selectionArgs = new String[]{uri};
		Cursor cursor = db.query(BD.VIMAGE, columns, selection, selectionArgs, null, null, null);
		
		if(cursor.moveToFirst()){
			long id = cursor.getLong(cursor.getColumnIndex(BD.nIDvimage));
			cursor.close();
			return id;
		}
		
		cursor.close();
		return -1;
	}
	
	/**
	 * Devolvemos un número positivo si la cadena que se pasa como argumento existe en la BD o <i>-1</i> en caso contrario 
	 * @param uri la cadena (nombre archivo)
	 * @return
	 */
	public static long getPortraitID(String uri){
		
		String[] columns = new String[]{BD.nIDvportrait};
		String selection = BD.sUri + "= ?;";
		String[] selectionArgs = new String[]{uri};
		Cursor cursor = db.query(BD.VPORTRAIT, columns, selection, selectionArgs, null, null, null);
		
		if(cursor.moveToFirst()){
			long id = cursor.getLong(cursor.getColumnIndex(BD.nIDvportrait));
			cursor.close();
			return id;
		}
		
		cursor.close();
		return -1;
	}
	
	/**
	 * Devolvemos un número positivo si la cadena que se pasa como argumento existe en la BD o <i>-1</i> en caso contrario 
	 * @param uri la cadena (nombre archivo)
	 * @return
	 */
	public static long getVideoID(String uri){
		
		String[] columns = new String[]{BD.nIDvvideo};
		String selection = BD.sUri + "= ?;";
		String[] selectionArgs = new String[]{uri};
		Cursor cursor = db.query(BD.VVIDEO, columns, selection, selectionArgs, null, null, null);
		
		if(cursor.moveToFirst()){
			long id = cursor.getLong(cursor.getColumnIndex(BD.nIDvvideo));
			cursor.close();
			return id;
		}
		
		cursor.close();
		return -1;
	}
	
	/**
	 * Devolvemos un número positivo si la cadena que se pasa como argumento existe en la BD o <i>-1</i> en caso contrario 
	 * @param sku la cadena (id del juego)
	 * @return
	 */
	public static boolean isVgameID(String sku){
		
		String[] columns = new String[]{BD.nIDvgame};
		String selection = BD.nIDvgame + "= ?;";
		String[] selectionArgs = new String[]{sku};
		Cursor cursor = db.query(BD.VGAME, columns, selection, selectionArgs, null, null, null);
		
		if(cursor.moveToFirst()){
			cursor.close();
			return true; // Si encontró algo, existe en bd. ¿Cierto?
			//return cursor.getLong(cursor.getColumnIndex(BD.nIDvgame));
		}
		
		cursor.close();
		return false;
	}
	
	/**Definimos únicamente estáticos*/
	private BDManager(){}

}
